package com.sromku.bugsnag.actions; import java.util.List; import org.eclipse.jdt.core.IJavaElement; import org.eclipse.jface.action.Action; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.TableViewer; import com.sromku.bugsnag.dialog.ClassSelectionDialog; import com.sromku.bugsnag.model.Error; import com.sromku.bugsnag.utils.WorkspaceUtils; public class OpenEditorAction extends Action { private final TableViewer viewer; public OpenEditorAction(TableViewer viewer) { this.viewer = viewer; } @Override public void run() { ISelection selection = viewer.getSelection(); Object obj = ((IStructuredSelection) selection).getFirstElement(); Error error = (Error) obj; String[] classLocation = error.where.split(":"); String clz = ""; Integer line = -1; if (classLocation.length > 1) { clz = classLocation[0]; try { line = Integer.valueOf(classLocation[1]); } catch (Exception e) { } } else { clz = classLocation[0]; } List<IJavaElement> javaElements = WorkspaceUtils.search(clz); if (javaElements.size() > 0) { if (javaElements.size() == 1) { WorkspaceUtils.openInEditor(javaElements.get(0), line); } else { ClassSelectionDialog classSelectionDialog= new ClassSelectionDialog(viewer.getTable().getShell(), javaElements, clz, line); classSelectionDialog.open(); } } } }